// 对称加密：就是加密与解密的 秘钥一致，简单的说就是 加密时用到的 密码，与解密时用到的 密码一致
const crypto = require('crypto')
module.exports = {
    aesEncrypt(data, key = 'helloworld') {//加密
        /**
         * 通过 crypto ,与key 创建一个ciper暗号
         * createCipheriv(algorithm，key)
         * algorithm 加密类型
         * key       密码
         */
        let ciper = crypto.createCipher('aes192', key);
        //把数据加密
        //update 有多种方法
        //推荐   update(data, inputEncoding, outputEncoding)
        /**
         *       data 要加密的数据
         *       inputEncoding 输入的编码，其实就是data的编码
         *       outputEncoding 输出的编码，正常我们都使用hex 16进制的输出
         */
        let returnStr = ciper.update(data, 'utf8', 'hex');
        //加入结尾符
        let final = ciper.final('hex');
        returnStr = returnStr + final;
        return returnStr;
    },
    aesDecrypt(encrypted, key = 'helloworld') { //解密
        /**创建一个解密 */
        const deciper = crypto.createDecipher('aes192', key);
        /**
         *  update(data: string, inputEncoding: Encoding | undefined, outputEncoding: Encoding): string;
         *  data 就是被加密的字符串，inputEncoding 这个加密的字符的字符串一般椒16进制字符串，outputEncoding 输出的字符串类型一般utf8
         */
        let descrped = deciper.update(encrypted, 'hex', 'utf8');
        descrped += deciper.final('utf8')
        return descrped;
    }
}

